package com.ict.web.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ict.common.core.domain.AjaxResult;
import com.ict.web.domain.ExtractRule;
import com.ict.web.dto.ExchangeExpertAssignDto;
import com.ict.web.dto.ExchangeExpertDto;
import com.ict.web.dto.ExtractRuleBeginDto;
import com.ict.web.dto.ExtractRuleEditDto;
import com.ict.web.vo.ExpertInformationSheetDetailVo;
import com.ict.web.vo.ExtractRuleBeginVo;

import java.util.List;

/**
 * 抽取规则Service接口
 *
 * @author xc
 * @date 2022-02-25
 */
public interface IExtractRuleService extends IService<ExtractRule>
{
    /**
     * 查询抽取出来的专家信息和该规则信息
     *
     * @param list 抽取规则
     * @return ExtractRuleBeginVo
     */
    public List<ExtractRuleBeginVo> selectExtractRuleList(List<ExtractRuleBeginDto> list);

    /**
     * 修改抽取规则
     *
     * @param dto 抽取规则
     * @return 结果
     */
    public long updateExtractRule(ExtractRuleEditDto dto);


    /**
     * 批量插入抽取规则
     *
     * @param list 批量抽取规则
     * @return 结果
     */
     int batchInsert(List<ExtractRule> list);

    /**
     * 修改规则-更换专家-随机抽取、按条件抽取
     * @param dto
     * @return
     */
    public ExpertInformationSheetDetailVo updateRuleExchangeExpert(ExchangeExpertDto dto);
    /**
     * 更换专家查看专家信息-随机抽取、按条件抽取
     * @param dto
     * @return
     */
    public ExpertInformationSheetDetailVo selectExchangeExpert(ExchangeExpertDto dto);

    /**
     * 评审任务查看专家信息抽取信息
     * @param dto
     * @return
     */
    public ExpertInformationSheetDetailVo selectExchangeExpertInfo(ExchangeExpertDto dto);

    /**
     * 指定专家list(未抽取的专家)
     * @param reviewTaskId
     * @param expertId
     * @return ExtractExpert
     */
    public ExpertInformationSheetDetailVo exchangeExpert(Long reviewTaskId,Long expertId,Long extractExpertId);
    /**
     * 指定专家list(未抽取的专家)
     * @param reviewTaskId
     * @return ExtractExpert
     */
    public List<ExpertInformationSheetDetailVo> exchangeExpertAssignList(Long reviewTaskId);

    /**
     * 更换专家
     * @param exchangeExpertAssignDto
     * @return
     */
    public AjaxResult exchangeExpertAssign(ExchangeExpertAssignDto exchangeExpertAssignDto);
    /**
     * 获取开始抽取参数对象
     *
     * @return ExtractRuleBeginDto
     */
    public List<ExtractRuleBeginDto> getParameter();
}
